// 6.42 编写递归算法，计算二叉树中叶子结点的数目。
#include <stdio.h>
#include <stdlib.h>
#include "E:\Desktop\data_struct\5TREE\1_bin_tree\creat.h"
// 统计节点个数
int fun_6_42_(tree *root)
{
    if (!root)
        return 0;
    else
        return fun_6_42_(root->left) + fun_6_42_(root->right) + 1;
}
// 统计叶子节点个数
int fun_6_42(tree *root)
{
    if (!root)
    {
        return 0;
    }
    else
    {
        if (!root->left && !root->right)
            return 1;
        else
            return fun_6_42(root->left) + fun_6_42(root->right);
    }
}
int main()
{
    /*******************code*******************/
    int n = 15;
    int a1[15] = {1,
                  2, 3,
                  4, 5, NULL, NULL,
                  NULL, 6, 7, NULL, NULL, NULL, NULL, NULL};
    tree *root1;
    CreatTree(root1, a1, n, 0);
    int k = fun_6_42(root1);
    printf("%d", k);
    int m = fun_6_42_(root1);
    printf("\n%d", m);

    /******************************************/
    printf("\n\n****************************\n");
    printf("Press Enter key to continue\n");
    getchar();
    return 0;
    /******************************************/
}
